Probleme bei Mehrsprachigkeit
Formulare können übersetzt werden. Dazu gibt es in den Attributen zum Formular die Möglichkeit, genau zu definieren, ob und in welche Sprachen eine Übersetzung notwendig ist. Leider kann es hierbei Probleme geben…
War ein Formular zwischenzeitlich mal übersetzt und soll nun “nicht übersetzungsrelevant” eingestellt werden, so sind weiterhin die Übersetzungen vorhanden und werden nicht gelöscht!!
Problem
Wird die Übersetzungsrelevanz umgestellt auf “nicht übersetzungsrelevant” und das Formular wird verständlicher- und logischerweise weiter entwickelt, dann bleiben die alten Übersetzungen, die auch Variablen enthalten, bestehen und können zu einem Programmabbruch führen.
Verwenden Sie z.B. einen Feldnamen einer Struktur und übersetzen das Formular, dann ist der Feldname logischerweise in der Übersetzung enthalten. Wird das Formular nun auf “nicht übersetzungsrelevant” umgestellt und die Struktur geändert – das verwendete Feld wird gelöscht -, dann wird das Formular beim Druck abbrechen, weil der Feldname nicht mehr bekannt ist.
Die SAP hat hierfür einen Korrekturreport zur Verfügung gestellt:
Coding
report zdelete_sf_translation.
parameter formname type STXFADM-FORMNAME.
parameter language type sy-langu.
parameter delete.
data wstxfadm type stxfadm.
data number type i.
if delete = ‘ ‘.
write / ‘Only display without delete’.
else.
write / ‘Delete table entries’.
endif.
skip 1.
select single * from stxfadm into wstxfadm
where FORMNAME = formname.
if sy-subrc <> 0.
write / ‘Form does not exist!’.
elseif wstxfadm-masterlang = language.
write / ‘Language is Master language of the form!’.
write / ‘Language cannot be deleted!’.
else.
select count( * ) from stxfadmt into number
where langu = language and formname = formname.
write :/ number, ‘entries from STXFADMT’.
if delete = ‘X’.
delete from stxfadmt
where langu = language and formname = formname.
endif.
select count( * ) from stxfobjt into number
where langu = language and formname = formname.
write :/ number, ‘entries from STXFOBJT’.
if delete = ‘X’.
delete from stxfobjt
where langu = language and formname = formname.
endif.
select count( * ) from stxfvart into number
where langu = language and formname = formname.
write :/ number, ‘entries from STXFVART’.
if delete = ‘X’.
delete from stxfvart
where langu = language and formname = formname.
endif.
select count( * ) from stxftxt into number
where spras = language and txtype = ‘F’
and formname = formname.
write :/ number, ‘entries from STXFTXT’.
if delete = ‘X’.
delete from stxftxt
where spras = language and txtype = ‘F’
and formname = formname.
endif.
select count( * ) from stxftxta into number
where spras = language and txtype = ‘F’
and formname = formname.
write :/ number, ‘entries from STXFTXTA’.
if delete = ‘X’.
delete from stxftxta
where spras = language and txtype = ‘F’
and formname = formname.
endif.
select count( * ) from stxftxtv into number
where spras = language and txtype = ‘F’
and formname = formname.
write :/ number, ‘entries from STXFTXTV’.
if delete = ‘X’.
delete from stxftxtv
where spras = language and txtype = ‘F’
and formname = formname.
endif.
if delete = ‘X’.
skip 1.
write / ‘Entries were deleted’.
commit work.
endif.
endif.
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024